import html2canvas from "html2canvas";
import jspdf from "jspdf";


export default {
  install: function (Vue) {
    Vue.prototype.exportPdf = (dom, title) => {
      const content = document.querySelector(dom);
      html2canvas(content, {
        allowTaint: true
      }).then(canvas => {
        // 内容宽度
        let contentWidth = canvas.width;
        // 内容高度
        let contentHeight = canvas.height;
        // A4纸高度
        let pageHeight = contentWidth / 592.28 * 841.89;
        // 未生成pdf的html高度
        let leftHeight = contentHeight;
        // 页面偏移
        let position = 0;
        // a4纸的尺寸[595.28, 841.89], html 页面生成的canvas 在pdf中图片的宽高
        let imgWidth = 595.28;
        let imgHeight = 592.28 / contentWidth * contentHeight;
        // canvas转图片数据
        let pageData = canvas.toDataURL('image/jpeg', 1.0);
        // 新建jspdf
        let PDF = new jspdf('', 'pt', 'a4')
        // 判断是否分页
        if (leftHeight < pageHeight) {
          PDF.addImage(pageData, 'JPEG', 0, 0, imgWidth, imgHeight)
        }else {
          while (leftHeight < pageHeight){
            PDF.addImage(pageData, 'JPEG', 0, position, imgWidth, imgHeight);
            leftHeight -= pageHeight
            position -= 841.89;
            if (leftHeight>0){
              PDF.addPage()
            }
          }
        }

        // 保存文件
        PDF.save(title + '.pdf')
      })
    }

  }

}
